### ROP-1 Gadget 寻找 #### 1. 链路定位 * 在整册链路中的位置:NX 封死栈执行后,ROP 复用镜像 / 库里已有短指令序列,是控制流劫持后的 "执行什么"。 * 作用:理解 Gadget 本质是给寄存器传参、触发系统调用的积木。 #### 2. 前置知识 * `ret` 结尾的短指令序列概念。 * System V 传参寄存器 `rdi/rsi/rdx` 与系统调用号 `rax`。 #### 3. 技术原理 * Gadget 是一段以 `ret` 结尾的既有指令片段,执行完自身动作后 `ret` 从栈顶弹下一地址,天然适合串联。典型如 `pop rdi; ret`:把栈上一个值装入 `rdi`(第一个参数)再返回。挑选看质量(能否设置目标寄存器)与副作用(是否破坏其他寄存器 / 内存),不是数量越多越好。 * NX 生效后栈页不可执行,取指遇该页触发页错误,输入直接当指令跑被封死。ROP 放弃自造指令,转而在镜像代码段与已加载库里找以返回指令收尾的短片段,借片段布置寄存器与跳转,控制流仍走合法代码段。 * 每个 gadget